package com.naiterui.ehp.bs.im.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * MQTT连接参数
 * <P>File name : MqttConnectParam.java </P>
 * <P>Author : zhouyanxin </P>
 * <P>Date : 2015年8月7日 </P>
 */
@ApiModel(value = "MqttConnectParam", description = "MQTT连接参数")
public class MqttConnectParam {

    @ApiModelProperty(value = "mqtt服务器域名地址")
    protected String dnHost;

    /**
     * mqtt服务器IP地址
     */
    @ApiModelProperty(value = "mqtt服务器IP地址")
    protected String host;

    /**
     * mqtt服务端口号
     */
    @ApiModelProperty(value = "mqtt服务端口号")
    private int port;

    /**
     * mqtt服务器连接串
     */
    @ApiModelProperty(value = "mqtt服务器连接串")
    private String serverURI;

    /**
     * 心跳保持时间 单位：秒
     */
    @ApiModelProperty(value = "心跳保持时间 单位：秒")
    private int keepAliveInterval;

    /**
     * 断开连接时是否要清除session
     */
    @ApiModelProperty(value = "断开连接时是否要清除session")
    private boolean cleanSession;

    /**
     * 发送客户端状态信息的主题名称
     */
    @ApiModelProperty(value = "发送客户端状态信息的主题名称")
    private String statusTopicName;

    /**
     * 发送遗嘱消息的主题名称
     */
    @ApiModelProperty(value = "发送遗嘱消息的主题名称")
    private String willTopicName;

    /**
     * 用户收取消息的主题名称前缀，客户端需要使用此前缀再加上当前用户Id进行使用
     */
    @ApiModelProperty(value = "用户收取消息的主题名称前缀，客户端需要使用此前缀再加上当前用户Id进行使用")
    private String msgTopicName;

    /**
     * 连接超时间时间 单位：秒
     */
    @ApiModelProperty(value = "连接超时间时间 单位：秒")
    private int connectionTimeout;

    /**
     * 订阅主题所使用的qos等级，发送状态、遗嘱消息所使用的qos等级
     */
    @ApiModelProperty(value = "订阅主题所使用的qos等级，发送状态、遗嘱消息所使用的qos等级")
    private int qos;

    /**
     * 是否对消息进行持久化
     */
    @ApiModelProperty(value = "是否对消息进行持久化")
    private boolean retained;

    /**
     * BI接口地址
     */
    @ApiModelProperty(value = "BI接口地址")
    private String traceHost;

    /**
     * 公告主题
     */
    @ApiModelProperty(value = "公告主题")
    private String publicTopicName;

    /**
     * session过期时间
     */
    @ApiModelProperty(value = "session过期时间")
    private Integer sessionTimeout;

    /**
     * 公共push主题
     */
    @ApiModelProperty(value = "公共push主题")
    private String publicPushTopicName;

    /**
     * 私人push主题(前缀)
     */
    @ApiModelProperty(value = "私人push主题(前缀)")
    private String privatePushTopicName;

    /**
     * @return String 取得域 host 的方法。
     */
    public String getHost() {
        return host;
    }

    /**
     * @param host 对域 host 的设置方法.
     */
    public void setHost(String host) {
        this.host = host;
    }

    /**
     * @return int 取得域 port 的方法。
     */
    public int getPort() {
        return port;
    }

    /**
     * @param port 对域 port 的设置方法.
     */
    public void setPort(int port) {
        this.port = port;
    }

    /**
     * @return int 取得域 keepAliveInterval 的方法。
     */
    public int getKeepAliveInterval() {
        return keepAliveInterval;
    }

    /**
     * @param keepAliveInterval 对域 keepAliveInterval 的设置方法.
     */
    public void setKeepAliveInterval(int keepAliveInterval) {
        this.keepAliveInterval = keepAliveInterval;
    }

    /**
     * @return boolean 取得域 cleanSession 的方法。
     */
    public boolean isCleanSession() {
        return cleanSession;
    }

    /**
     * @param cleanSession 对域 cleanSession 的设置方法.
     */
    public void setCleanSession(boolean cleanSession) {
        this.cleanSession = cleanSession;
    }

    /**
     * @return String 取得域 statusTopicName 的方法。
     */
    public String getStatusTopicName() {
        return statusTopicName;
    }

    /**
     * @param statusTopicName 对域 statusTopicName 的设置方法.
     */
    public void setStatusTopicName(String statusTopicName) {
        this.statusTopicName = statusTopicName;
    }

    /**
     * @return String 取得域 willTopicName 的方法。
     */
    public String getWillTopicName() {
        return willTopicName;
    }

    /**
     * @param willTopicName 对域 willTopicName 的设置方法.
     */
    public void setWillTopicName(String willTopicName) {
        this.willTopicName = willTopicName;
    }

    /**
     * @return String 取得域 msgTopicName 的方法。
     */
    public String getMsgTopicName() {
        return msgTopicName;
    }

    /**
     * @param msgTopicName 对域 msgTopicName 的设置方法.
     */
    public void setMsgTopicName(String msgTopicName) {
        this.msgTopicName = msgTopicName;
    }

    /**
     * @return int 取得域 connectionTimeout 的方法。
     */
    public int getConnectionTimeout() {
        return connectionTimeout;
    }

    /**
     * @param connectionTimeout 对域 connectionTimeout 的设置方法.
     */
    public void setConnectionTimeout(int connectionTimeout) {
        this.connectionTimeout = connectionTimeout;
    }

    /**
     * @return int 取得域 qos 的方法。
     */
    public int getQos() {
        return qos;
    }

    /**
     * @param qos 对域 qos 的设置方法.
     */
    public void setQos(int qos) {
        this.qos = qos;
    }

    /**
     * @return boolean 取得域 retained 的方法。
     */
    public boolean isRetained() {
        return retained;
    }

    /**
     * @param retained 对域 retained 的设置方法.
     */
    public void setRetained(boolean retained) {
        this.retained = retained;
    }

    public String getTraceHost() {
        return traceHost;
    }

    public void setTraceHost(String traceHost) {
        this.traceHost = traceHost;
    }

    public String getPublicTopicName() {
        return publicTopicName;
    }

    public void setPublicTopicName(String publicTopicName) {
        this.publicTopicName = publicTopicName;
    }

    public Integer getSessionTimeout() {
        return sessionTimeout;
    }

    public void setSessionTimeout(Integer sessionTimeout) {
        this.sessionTimeout = sessionTimeout;
    }

    public String getPublicPushTopicName() {
        return publicPushTopicName;
    }

    public void setPublicPushTopicName(String publicPushTopicName) {
        this.publicPushTopicName = publicPushTopicName;
    }

    public String getPrivatePushTopicName() {
        return privatePushTopicName;
    }

    public void setPrivatePushTopicName(String privatePushTopicName) {
        this.privatePushTopicName = privatePushTopicName;
    }

    public String getServerURI() {
        return serverURI;
    }

    public void setServerURI(String serverURI) {
        this.serverURI = serverURI;
    }

    public String getDnHost() {
        return dnHost;
    }

    public void setDnHost(String dnHost) {
        this.dnHost = dnHost;
    }

    /**
     * @Author Gaoll
     * @Date 2016年8月5日
     * @since 1.0.0
     * @return
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "MqttConnectParam [host=" + this.host + ", port=" + this.port + ", serverURI=" + this.serverURI + ", keepAliveInterval="
                + this.keepAliveInterval + ", cleanSession=" + this.cleanSession + ", statusTopicName=" + this.statusTopicName + ", willTopicName="
                + this.willTopicName + ", msgTopicName=" + this.msgTopicName + ", connectionTimeout=" + this.connectionTimeout + ", qos=" + this.qos
                + ", retained=" + this.retained + ", traceHost=" + this.traceHost + ", publicTopicName=" + this.publicTopicName + ", sessionTimeout="
                + this.sessionTimeout + ", publicPushTopicName=" + this.publicPushTopicName + ", privatePushTopicName=" + this.privatePushTopicName
                + "]";
    }

}
